const mongoose=require('mongoose')

//对于第一次链接数据库时，数据库中没有该数据库则会创建一个数据库
//同样的操作表时没有对应表也会自动创建一个 如下Schema建立映射后，使用model生成users数据表模型，数据库中就会有users表
//对项目的数据表进行一个初始化建表文件


const db=mongoose.createConnection('mongodb://localhost:27017/yike01')

db.on('error',console.error.bind(console,'connection error'));
db.once('open',function(){
    console.info('数据库yike链接成功！')
})

//建立用户映射表，完成初始化表结构的操作
const UserSchema=new mongoose.Schema({
    //如果这里不设置对应的字段，则无法添加新的数据
    //有一个id字段 _id: ObjectId("6368d7ccf65b2ebaf8f47867")
    name:{type:String},                         //用户名
    psw:{type:String},                          //密码
    email:{type:String},                        //邮箱
    sex:{type:String,default:'asexual'},        //性别 默认中
    birth:{type:Date},                          //生日
    phone:{type:Number},                        //电话
    explain:{type:String},                      //签名
    imgrul:{type:String,default:'user.png'},    //头像链接 默认 
    time:{type:Date},                       //注册时间
})
//好友表
const FriendSchema=new mongoose.Schema({
    //如果这里不设置对应的字段，则无法添加新的数据
    //有一个id字段 _id: ObjectId("6368d7ccf65b2ebaf8f47867")
    //使用User表中的id字段 
    userID:{ type: Schema.Types.ObjectId, ref: 'User' },  //用户名
    friendID:{type:Schema.Types.ObjectId,ref:'User'}, //好友id
    state:{type:String},                          //好友状态0是好友，1申请中，2申请发送
    time:{type:Date},                       //生成时间
})
//一对一数聊天数据表
const MessageSchema=new mongoose.Schema({
    userID:{type:Schema.Types.ObjectId,ref:'User'},   //用户名
    friendID:{type:Schema.Types.ObjectId,ref:'User'}, //好友id
    message:{type:String},
    types:{type:String},                              //数据发送类型0,1,2,3分别对应
    time:{type:Date},                                 //发送时间
    state:{type:Number}                               //0已读 1未读
})  

//群表
const GroupSchema=new mongoose.Schema({
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    name:{type:String},                                 //群名
    imgrul:{type:String,default:'group.png'},           //群头像 默认 
    time:{type:Date},                                   //创建时间
    notice:{type:String},                               //公告
})  

//群成员表
const GroupUserSchema=new mongoose.Schema({
    goupID:{type:Schema.Types.ObjectId,ref:'GroupSchema'},     //用户名
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    name:{type:String},                                 //群内名称
    tip:{type:Number},                                  //未读消息 
    time:{type:Date},                                   //加入时间
    shield:{type:Number},                               //是否屏蔽群消息
})  

//群消息表
const GroupMessageSchema=new mongoose.Schema({
    groupID:{type:Schema.Types.ObjectId,ref:'GroupSchema'},     //用户名
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    message:{type:String},                              //内容
    types:{type:String},                              //数据发送类型0,1,2,3分别对应
    time:{type:Date},                                 //发送时间
}) 



const User=db.model('User',UserSchema);
// const Friend=db.model('Friend',FriendSchema)
const Message=db.model('Message',MessageSchema)
const Group=db.model('Group',GroupSchema)
const GroupUser=db.model('GroupUser',GroupUserSchema)
const GroupMessage=db.model('GroupMessage',GroupMessageSchema)




User.find({},(err,e)=>{
    if(err){
        console.log('查询出错');
    }
 console.log(e);
})

//这里的User就是yike数据库中的users数据表
//通过这个User的映射==类，创建一个对象
let user=new User({
    //如果少传递数据，会自动默认设置默认参数
    //同时这里的字段必须要和Schema中的字段一样。
    sex: 'female',
    imgurl: 'five.png',
    email: '9932375@qq.com'
})
// //通过save存到User中
user.save((err,e)=>{
    if(err){
        console.log('查询出错');
    }
 console.log(e);
})